Declaration Is Hidden (DIH)

Description:

DIH detects declarations that hide other visible declarations. These are:

Incorrect:

Container = class

    private
    size:integer;
    
    public
    procedure copyFrom(c:Container);
end;
...
    procedure Container.copyFrom(c:Container);
    var size:integer;
    begin
        size := c.size;
        ...
    end;

Correct:

Container = class

    private
    size:integer;
    
    public
    procedure copyFrom(c:Container);
end;
...
    procedure Container.copyFrom(c:Container);
    var newSize:integer;
    begin
        newSize := c.size;
        ...
    end;

Incorrect:

Window = class

    protected
      style:integer;

    public
    class function Create(...):Window;
end;

Button = class(Window)

    protected
    style:integer;

    public
    class function Create(...):Button;
end;

Correct:

Window = class

    protected
      style:integer;

    public
    class function Create(...):Window;
end;

Button = class(Window)

    protected
    extendedStyle:integer;

    public
    class function CreateButton(...):Button;
end;

Refactoring: